فرآیند بوت لینوکس رو مثل روشن کردن یه ماشین تصور کن. اول باید کلید رو بزنی (BIOS/UEFI)، بعد موتور روشن بشه (Bootloader)، بعد موتور شروع به کار کنه (Kernel) و در نهایت ماشین آماده حرکت بشه (سیستمعامل). این جلسه دقیقاً همین مراحل رو بهت یاد میده!
فرآیند بوت (Boot) در لینوکس، مجموعه مراحلی است که از لحظه روشن شدن سیستم تا آماده شدن برای ورود کاربر انجام میشود. در این جلسه، با چهار مرحله اصلی راهاندازی لینوکس آشنا میشوید و تفاوت بین BIOS و UEFI را یاد میگیرید.
سرور روشن میشود و سختافزار خود را چک میکند (POST). این کار توسط BIOS/UEFI انجام میشود.
برنامه Bootloader (مانند GRUB) اجرا میشود و کرنل (Kernel) را بارگذاری میکند.
کرنل در RAM بارگذاری میشود و کنترل را به init (یا systemd) میدهد.
سرویسها و برنامههای پسزمینه برای استفاده اجرا میشوند و سیستم آماده ورود کاربر است.
dmesg
بعد از اجرای Bootloader، پیامهای هسته با سرعت زیاد روی صفحه نمایش داده میشوند. برای مشاهده این پیامها بعد از راهاندازی، از دستور dmesg استفاده میکنیم.
توضیح: dmesg پیامهای kernel ring buffer را نمایش میدهد. این پیامها شامل اطلاعات سختافزاری، شناسایی دستگاهها و وضعیت راهاندازی هستند.
پیامهای بوت در kernel ring buffer ذخیره میشوند. هر تغییر جدید (مثل اضافه شدن دستگاه جدید) میتواند پیامهای قبلی را پاک کند. dmesg آخرین پیامهای بوت را نمایش میدهد.
journalctl
journalctl ابزار اصلی برای مشاهده لاگهای سیستم در توزیعهای مبتنی بر systemd است. این دستور پیامهای خطای سرویسها را نمایش میدهد و معمولاً به دسترسی root نیاز دارد.
توضیح: -b پیامهای مربوط به جلسه بوت فعلی را نمایش میدهد.
توزیعهای مختلف، پیامهای بوت را در مکانهای متفاوتی ذخیره میکنند:
/var/log/boot/var/log/boot.logتوضیح: مشاهده محتوای فایل لاگ بوت (در صورت وجود).
BIOS میتواند Bootloader را از دستگاههای زیر اجرا کند:
در زمان راهاندازی، BIOS به سراغ MBR (Master Boot Record) میرود که در اولین سکتور هارد دیسک قرار دارد و Bootloader را اجرا میکند. به دلیل محدودیت در ساختار، Bootloader باید بسیار کوچک باشد.
برای رفع مشکل راهاندازی در BIOS، در سال 1998 ساختار EFI و در سال 2005 ساختار UEFI ایجاد شد.
در سیستمهای UEFI، پارتیشن ESP (EFI System Partition) با فرمت FAT (که توسط مایکروسافت توسعه داده شده است) برای ذخیره Bootloader استفاده میشود. لینوکس این پارتیشن را در مسیر /boot/efi Mount میکند.
توضیح: پارتیشن /boot/efi مربوط به ESP است.
برای بررسی اینکه سیستم در حالت UEFI بوت شده است، از دستور زیر استفاده میکنیم:
توضیح: اگر دایرکتوری /sys/firmware/efi وجود داشته باشد، سیستم در حالت UEFI بوت شده است. در غیر این صورت، در حالت BIOS بوت شده است.
dmesg: نمایش پیامهای هستهjournalctl: نمایش لاگهای systemd/boot/efi